#ifndef _SYSTEM_INFO_H_
#define _SYSTEM_INFO_H_

#include <string>

#include <esp_err.h>
#include <freertos/FreeRTOS.h>

/**
 * @brief 系统信息类
 * 
 * 提供获取ESP32系统各种信息的静态方法，包括闪存大小、堆内存、MAC地址等
 */
class SystemInfo {
public:
    /**
     * @brief 获取闪存大小
     * @return 闪存大小（字节）
     */
    static size_t GetFlashSize();
    
    /**
     * @brief 获取系统运行期间的最小空闲堆内存大小
     * @return 最小空闲堆内存大小（字节）
     */
    static size_t GetMinimumFreeHeapSize();
    
    /**
     * @brief 获取当前空闲堆内存大小
     * @return 当前空闲堆内存大小（字节）
     */
    static size_t GetFreeHeapSize();
    
    /**
     * @brief 获取设备MAC地址
     * @return MAC地址字符串，格式为xx:xx:xx:xx:xx:xx
     */
    static std::string GetMacAddress();
    
    /**
     * @brief 获取芯片型号名称
     * @return 芯片型号名称字符串
     */
    static std::string GetChipModelName();
    
    /**
     * @brief 打印FreeRTOS任务的实时统计信息
     * @param xTicksToWait 等待统计数据收集的时间（以tick为单位）
     * @return ESP_OK表示成功，其他值表示错误
     */
    static esp_err_t PrintRealTimeStats(TickType_t xTicksToWait);
};

#endif // _SYSTEM_INFO_H_
